<div class="container">
  <div  [hidden]="submitted">
    <h1>Hero Form</h1>
    <form *ngIf="active" (ngSubmit)="onSubmit()" #heroForm="ngForm">
      <div class="form-group">
        <label for="name">Name</label>
        <input type="text" class="form-control" required
          [(ngModel)]="model.name"
            ngControl="name"  #name="ngForm" >
        <div [hidden]="name.valid || name.pristine" class="alert alert-danger">
          Name is required
        </div>
      </div>

      <div class="form-group">
        <label for="alterEgo">Alter Ego</label>
        <input type="text" class="form-control"
          [(ngModel)]="model.alterEgo"
            ngControl="alterEgo" >
      </div>

      <div class="form-group">
        <label for="power">Hero Power</label>
        <select class="form-control" required
          [(ngModel)]="model.power"
            ngControl="power" #power="ngForm" >
          <option *ngFor="let p of powers" [value]="p">{{p}}</option>
        </select>
        <div [hidden]="power.valid || power.pristine" class="alert alert-danger">
          Power is required
        </div>
      </div>

      <button type="submit" class="btn btn-default" [disabled]="!heroForm.form.valid">Submit</button>

      <button type="button" class="btn btn-default" (click)="newHero()">New Hero</button>

     <!-- NOT SHOWN IN DOCS -->
      <div>
        <hr>
        Name via form.controls = {{showFormControls(heroForm)}}
      </div>
     <!-- - -->
    </form>
  </div>

  <div [hidden]="!submitted">
    <h2>You submitted the following:</h2>
    <div class="row">
      <div class="col-xs-3">Name</div>
      <div class="col-xs-9  pull-left">{{ model.name }}</div>
    </div>
    <div class="row">
      <div class="col-xs-3">Alter Ego</div>
      <div class="col-xs-9 pull-left">{{ model.alterEgo }}</div>
    </div>
    <div class="row">
      <div class="col-xs-3">Power</div>
      <div class="col-xs-9 pull-left">{{ model.power }}</div>
    </div>
    <br>
    <button class="btn btn-default" (click)="submitted=false">Edit</button>
  </div>
</div>

<!-- ====================================================  -->
  <div>
    <form>

       <!-- ... all of the form ... -->

    </form>
  </div>

<!-- ====================================================  -->
<hr>
<style>
  .no-style .ng-valid {
  border-left: 1px  solid #CCC
}

  .no-style .ng-invalid {
  border-left: 1px  solid #CCC
}
</style>
<div class="no-style" style="margin-left: 4px">
  <div class="container">
      <h1>Hero Form</h1>
      <form>
        <div class="form-group">
          <label for="name">Name</label>
          <input type="text" class="form-control" required>
        </div>

        <div class="form-group">
          <label for="alterEgo">Alter Ego</label>
          <input type="text" class="form-control">
        </div>

        <div class="form-group">
          <label for="power">Hero Power</label>
          <select class="form-control" required>
            <option *ngFor="let p of powers" [value]="p">{{p}}</option>
          </select>
        </div>

        <button type="submit" class="btn btn-default">Submit</button>

      </form>
  </div>

  <!-- ====================================================  -->
  <hr>
  <div class="container">
      <h1>Hero Form</h1>
      <form>
        {{diagnostic}}
        <div class="form-group">
          <label for="name">Name</label>
          <input type="text" class="form-control" required
            [(ngModel)]="model.name" >
        </div>

        <div class="form-group">
          <label for="alterEgo">Alter Ego</label>
          <input type="text"  class="form-control"
            [(ngModel)]="model.alterEgo">
        </div>

        <div class="form-group">
          <label for="power">Hero Power</label>
          <select class="form-control"  required
            [(ngModel)]="model.power" >
            <option *ngFor="let p of powers" [value]="p">{{p}}</option>
          </select>
        </div>

        <button type="submit" class="btn btn-default">Submit</button>

      </form>
  </div>

  <!-- EXTRA MATERIAL FOR DOCUMENTATION -->
  <hr>
    <input type="text"  class="form-control" required
      [(ngModel)]="model.name" >
      TODO: remove this: {{model.name}}
  <hr>
    <input type="text" class="form-control" required
      [ngModel]="model.name"
      (ngModelChange)="model.name = $event" >
      TODO: remove this: {{model.name}}
  <hr>
  <form *ngIf="active">

       <input type="text" class="form-control" required
         [(ngModel)]="model.name"
         ngControl="name" >
  <hr>
       <input type="text" class="form-control" required
         [(ngModel)]="model.name"
         ngControl="name"  #spy >
       <br>TODO: remove this: {{spy.className}}
  </form>

</div>
